/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package moteur.carte;

import java.awt.Graphics2D;

/**
 *
 * @author Administrateur
 */
public abstract class Clickable {
    float x, y;
    static float width = 0.05f;

    /**
     *
     */
    public Clickable() {
    }

    /**
     * retourne vrai si le point définie par les coordnnées x et y est en colliion avec l'objet.
     * @param mx
     * @param my
     * @return
     */
    public boolean collision(float mx, float my) {
        return (mx >= x) && (mx <= x+width)
               && (my >= y) && (my <= y+width);
    }

    /**
     * renvoie vrai si this et le clickable sont en collision.
     * @param cl
     * @return
     */
    public boolean collideWith(Clickable cl) {
        float a,b,c,d;
        a = this.x;
        b = this.x + width;
        c = cl.x;
        d = cl.x + width;
        if ((c <= b && c>= a) || (d <= b && d >= a)){
            return true;
        }else{
         a = this.y;
        b = this.y + width;
        c = cl.y;
        d = cl.y + width;

        return (c <= b && c>= a) || (d <= b && d >= a);
        }
    }

    /**
     *
     * @return
     */
    public float getWidth() {
        return width;
    }

    /**
     *
     * @param w
     */
    public void setWidth(float w) {
        width = w;
    }

    /**
     *
     * @return
     */
    public float getX() {
        return x;
    }

    /**
     *
     * @param x
     */
    public void setX(float x) {
        this.x = x;
    }

    /**
     *
     * @return
     */
    public float getY() {
        return y;
    }

    /**
     *
     * @param y
     */
    public void setY(float y) {
        this.y = y;
    }

     abstract void draw(Graphics2D g, int tailleCarte);
}
